using System;
using System.Linq.Expressions;
using System.Web.Routing;

namespace Webbness.Mvc.Extensions
{
    public class LinkToItem<T>
    {
        /// <summary>
        /// Gets or sets the menu action.
        /// </summary>
        /// <value>The menu action.</value>
        public Expression<Action<T>> MenuAction { get; set; }

        /// <summary>
        /// Gets or sets the title.
        /// </summary>
        /// <value>The title.</value>
        public string Title { get; set; }

        /// <summary>
        /// Gets or sets the route values.
        /// </summary>
        /// <value>The route values.</value>
        public RouteValueDictionary RouteValues { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="LinkToItem&lt;T&gt;"/> action should be checked for authorization.
        /// </summary>
        /// <value><c>true</c> if secure; otherwise, <c>false</c>.</value>
        public bool Secure { get; set; }
    }

    public class LinkItem
    {
        /// <summary>
        /// Gets or sets the method expression.
        /// </summary>
        /// <value>The method expression.</value>
        public MethodCallExpression MethodExpression { get; set; }

        /// <summary>
        /// Gets or sets the title.
        /// </summary>
        /// <value>The title.</value>
        public string Title { get; set; }

        /// <summary>
        /// Gets or sets the route values.
        /// </summary>
        /// <value>The route values.</value>
        public RouteValueDictionary RouteValues { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="LinkToItem&lt;T&gt;"/> action should be checked for authorization.
        /// </summary>
        /// <value><c>true</c> if secure; otherwise, <c>false</c>.</value>
        public bool Secure { get; set; }
    }
}